/**
 * 闭包(closure)是一个函数与其本身所被定义的词法环境的结合
 * 1、MDN:
 *    https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures
 * 2、阮一峰博客
 *    http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
 * 3、函数周围状态被称作 词法环境 ( lexical environment )
 */

function show(){
    let name = "kaifamiao" ;
    // 内部函数 showName 定义的环境就是 show 函数
    // 一个函数和对其周围状态的引用捆绑在一起，这样的组合就是闭包（closure）
    function showName(){
        // 内部函数可以访问外部函数的局部变量
        console.log( name );
    }
    // 调用内部函数
    showName();
}

show();
